package org.example.oop.exception;

/**
 * org.example.oop.exception
 *  1.检查性异常：通常在编译时出现
 *  2.运行时异常：通常在运行时出现
 *  3.错误ERROR：错误不是异常，而是脱离程序员控制的问题，通常在代码中被忽略。例如运行时出现
 *      栈溢出，在编译时检查不出
 * @author moLei
 * @description
 * @date 2025/6/16
 */
public class Demo01 {
    public static void main(String[] args) {
        // 循环异常
//        new  Demo01().a();
        // 计算异常
//        System.out.println(1/0);

        // 捕获异常
        int a = 1;
        int b = 0;
        // 快捷键ctrl + alt + t
        try {
            // 监控区域
//            int c = a/b;
//            // 主动抛出异常
//            if (b == 0) {
//                throw new Exception("除数不能为0");
//            }

            // 抛出自定义异常
            if (b == 0) {
                throw new CustomException("自定义异常：除数不能为0");
            }
        } catch (Exception e) {
            System.out.println("出现异常：" + e.getMessage());
        } finally {
            System.out.println("异常处理完毕");
        }
    }

    /**
     * 循环异常
     */
    public void a() {
        b();
    }

    public void b() {
        a();
    }
}
